14. Managementul calitatii software prin structuri de date


14.1 Conceptul de calitate softare

14.2 Generalitatea

14.3 Fiabilitatea

14.4 Mentenabilitatea

14.5 Realizarea calitatii

14.6 Cai de crestere a calitatii

back data structures curricula

14.1 Conceptul de calitate softare
Calitatea reprezinta totalitatea insusirilor:
- tehnice
- economice
- sociale
cu care se inzestreaza un produs software pentru a atinge obiectivul pentru care a fost creat.
Exista numeroase caracteristici de calitate, dintre care se enumera:
- corectitudinea
- fiabilitatea
- mentenabilitatea
- portabilitate
- generalitatea
- modularitatea
- testabilitatea
- utilizabilitatea
- coeziunea.
Exista standarde ce privesc:
- definirea caracteristicilor de calitate
- stabilirea interdependentelor
- definirea modalitatilor de masurare
- stabilire modalitati de a asigura elaborarea de proceduri care raspund din punct de vedere calitativ.
revenire

14.2 Generalitatea
Este foarte important ca programatorii sa conceapa ca la realizarea de software trebuie:
- sa se porneasca cu o problema simpla
- sa ofere beneficiarului o solutie astfel incat acesta sa capete incredere in echipa care dezvolta software
- sa se adauge treptat-treptat cate ceva la fiecare stadiu de dezvoltare a programului incat programul sa creasca in generalitate.
Este mai valoroasa o problema simpla pentru care exista un program foarte bun decat consolarea ca s-a lucrat foarte mult sa se scrie programul care solutioneaza problema cea mai complexa, numai ca acel program...NU FUNCTIONEAZA...
Daca se considera problema simpla pentru:
- citirea lui n, numar de elemente din sir
- citirea elementelor x[0], x[1], x[2],..., x[n-1] ditr-un sir
- calculul mediei aritmetice xmediu
- afisarea datelor sirului si a mediei calculate,
programul este simplu de realizat.
Daca se doreste cresterea generalitatii trebuie scris programul care:
- citeste m, numarul de serii pentru care se calculeaza mediile aritmetice
- citeste n, numarul de termeni ai seriilor
- iteste rand pe rand termenii celor m serii
- se initializeaza oun masiv bidimensional
- se calculeaza cele m medii
- se afisaza tabloul cu datele initiale
- se afisaza cele m medii aritmetice.
daca nu se stie numarul de termeni ai seriilor:
- se construieste o lista de baza
- pe masura ce apar termenii se genereaza elementele din listele derivate
- se calculeaza medii traversand liste de liste
- se afisaza datele initiale
- se afisaza mediile.
Daca se lucreaza cu serii de termeni foarte lungi si prelucrarile au caracter repetat:
- datele initiale se stocheaza in fisier
- inainte de calcul se incarca datele in structuri dinamice
- insumarea se face traversand structurile dinamice
- se insumeaza numai elementele active
- se afisaza rezultatele.
Tot in acest fel se vede si rezolvarea unei probleme de programare liniara, luand in considerare:
- problema de minim cu restrictii pe mai mic, problema de mici dimensiuni
- problema de minim cu restrictii pe mai mic si restrictii pe egal, problema de mici dimensiuni
- problema de minim cu restrictii pe mai mic, restrictii pe egal si restrictii pe mai mare, problema fiind de mici dimensiuni
- problema de minim cu restrictii pe mai mic, restrictii pe egal si restrictii pe mai mare, cu reoptimizarea termenului liber, problema fiind de mici dimensiuni
- problema de minim cu restrictii pe mai mic, restrictii pe egal si restrictii pe mai mare, cu reoptimizarea coeficientilor functiei obiectiv, problema fiind de mici dimensiuni
- problema de minim cu restrictii pe mai mic, restrictii pe egal si restrictii pe mai mare, cu reoptimizarea coeficientilor matricei tehnologice, problema fiind de mici dimensiuni
- problema de minim cu restrictii pe mai mic, restrictii pe egal si restrictii pe mai mare, cu toate reoptimizarile, problema fiind de mari dimensiuni, cu stocare in fisier si lucru cu matrice rare.
Numai dupa ce se obtine forma cea mai complexa, cu nivelul de generalitate maxim, se va trece la imbunatatirea performantei prin optimizare a programului.- problema de minim cu restrictii pe mai mic, restrictii pe egal si restrictii pe mai mare, cu reoptimizarea termenului liber, problema fiind de mici dimensiuni
revenire

14.3 Fiabilitatea
Daca un program este rulat de NTR ori, din care un numar de NRS rulari au condus la rezultate corecte si complete, beneficiarul fiind total multumit, fiabilitatea Fse defineste ca raportul dat de formula:
F=NRS/NTR
si este cuprinsa intre zero si unu.
daca un program se ruleaza de 200 ori si in 160 cazuri beneficiarul este multumit de rezultate, atunci:
NTR=200
NRS-160
F=160/200=0,8
ceea ce inseamna ca programul este bun. Dar nu foarte bun...
Fiabilitatea se modeleaza.
Modelele dau informatii asupra probabilitatii ca intr-un interval specificat sa se intrerupa executia programului datorita erorilor.
Se obtin informatii si asupra sansei ca doua caderi ale programului sa se produca in mod consecutiv intr-un interval specificat.
revenire

14.4 Mentenabilitatea
Mentenabilitatea este capacitatea unui program de a ramane in uz curent chiar daca se produc modificari in problema care a stat la baza elaborarii specificatiilor.
Apar modificari in :
- datele de intrare, prin aparitia de noi campuri
- formulele de calcul
- strucdura rezultatelor.
Programul trebuie gandit de la inceput sa fie mentenabil.
revenire

14.5 Realizarea calitatii
Calitatea produselor software se planifica intelegand prin aceasta:
- cunoasterea de aplicatii care rezolva aceleasi probleme ca programul care se doreste a fi construit
- alegerea nivelurilor maxime de calitate pentru caracteristicile aplicatiilor identificate
- atribuirea ca niveluri planificate aceste niveluri maxime, cautandu-se sa se dezvolte un produs superior tuturor celor cunoscute de echipa de dezvoltatori.
Controlul calitatii se efectueaza de fiecare programator inainte de a preda procedurile pe care le-au elaborat.
Se testeaza fiecare procedura.
Se masoara nivelul fiecarei caracteristici.
Se compara cu nivelul planificat.
daca nivelul existent este inferior celui planificat se revine asupra procedurii incercand imbunatatirea calitatii.
Pentru asigurarea calitatii se intreprind masuri legate de:
- stabilirea tehnicilor de programare utilizate
- modul de dezvoltare a secventelor
- definirea si utilizarea de secvente asupra carora s-a convenit ca sunt secvente de text sursa eficiente
- instruirea programatorilor
- analiza modului in care sunt respectate specificatiile de programare
- definirea modului in care se realizeaza secventele de program, cum se respecta cerintele de initializare
- obligativitatea de a testa inainte de a trece la urmatorul pas, ceea ce s-a efectuat la pasul precedent pentru a se evita continuarea prelucrarilor cu rezultate incorecte din fazele precedente.
Managementul calitatii presupune existenta unei structuri organizatorice care:
- defineste obiective de calitate
- dezvolta programe si masuri pentru educarea in spiritul calitatii a membrilor echipei
- construiesc fluxuri de urmat care sa conduca la asigurarea de procese ce conduc la obtinerea de proceduri de calitate
- popularizarea standardelor in randul membrilor echipei
- stimularea rezultatelor de best practice din organizatie
- implementarea de modele si proceduri de masurare a calitatii
- definirea si alocarea de fonduri pentru cresterea calitatii produselor software
- calificarea analistilor si programatorilor.
revenire

14.6 Cai de crestere a calitatii
Exista numeroase modalitati prin care se asigura cresterea calitatii odata cu alegerea structurilor de date, dintre acestea se mentioneaza:
- existenta bibliotecilor de subprograme pentru fiecare structura de date
- operarea curenta cu subprogramele din bibliotecile pentru fiecare structura de date
- elaborarea de variante de program cu utilizarea tuturor tipurilor de structuri de date
- comunicarea intre programatori
- calculul de indicatori de performanta pentru fiecare varianta de program
- testarea cat mai completa a programelor
- masurarea comportamentului la utilizatori a programelor
- externalizarea componentelor de citire si de afisare a datelor pentru a nu avea in toate procedurile instructiuni de citire/scriere
- acumularea de experienta in construirea de proceduri cu atentie maxima asupra modului in care sunt initializate variabilele.
revenire